package basic;

public class GoldbachConjecture {
    public static void main(String[] args) {
        // 遍历所有大于等于4的偶数
        for (int i = 4; i <= 100; i += 2) {
            // 输出当前偶数和两个质数之和的形式
            System.out.print(i + " = ");
            // 枚举小于当前偶数的所有正整数，判断是否为质数
            for (int j = 2; j < i; j++) {
                if (isPrime(j) && isPrime(i - j)) {
                    // 如果找到了两个质数之和等于当前偶数，则输出这两个质数
                    System.out.print(j + "+" + (i - j));
                    break;
                }
            }
            // 换行输出下一个偶数的哥德巴赫猜想形式
            System.out.println();
        }
    }

    /**
     * 判断一个整数是否为质数
     * @param n 待判断的整数
     * @return 如果是质数返回true，否则返回false
     */
    public static boolean isPrime(int n) {
        if (n <= 1) {
            return false;
        }
        // 从2到n的平方根遍历所有可能的因子
        for (int i = 2; i <= Math.sqrt(n); i++) {
            if (n % i == 0) {
                return false;
            }
        }
        return true;
    }
}

